9  Mapas interativos

Os mapas interativos têm se tornado uma ferramenta indispensável na visualização de dados geoespaciais, proporcionando uma experiência mais dinâmica e envolvente para o usuário. Diferente dos mapas estáticos, que limitam a análise a uma visão fixa, os mapas interativos permitem que o usuário explore e interaja com os dados, oferecendo funcionalidades como zoom, seleção de regiões e exibição de informações adicionais.

Vamos carregar os pacotes necessários:

library(leaflet)
library(geobr)
# Mapa básico
map <- leaflet() %>%
addTiles() %>%
setView(lng = -47.9292, lat = -15.7801, zoom = 4)
# Vetor de coordenadas
coordenadas <- data.frame(
nome = c("São Paulo", "Rio de Janeiro", "Brasília"),
lat = c(-23.5505, -22.9068, -15.7801),
lng = c(-46.6333, -43.1729, -47.9292),
valor = c(100, 200, 150))

# Adicionando marcadores ao mapa
map1 <- map %>%
addMarkers(data = coordenadas, ~lng, ~lat, popup = ~nome)
# Adicionando círculos ao mapa
map1 %>%
addCircles(data = coordenadas, ~lng, ~lat, weight = 1,
radius = ~valor * 1000, color = "blue",
fillOpacity = 0.5, popup = ~paste(nome, ":", valor))
# Exemplo de retângulo em torno de Brasília
leaflet() %>%
addTiles() %>%
addRectangles(
lng1 = -47.9292 - 1, lat1 = -15.7801 - 1,
lng2 = -47.9292 + 1, lat2 = -15.7801 + 1,
color = "red", fillOpacity = 0.2)
# Exemplo conectando três cidades
linha <- data.frame(
lat = c(-23.5505, -22.9068, -15.7801),
lng = c(-46.6333, -43.1729, -47.9292))

leaflet() %>%
addTiles() %>%
addPolylines(data = linha, ~lng, ~lat, color = "blue", weight = 4)
# Exemplo de popup customizado
leaflet() %>%
addTiles() %>%
addPopups(lng = -47.9292, lat = -15.7801, popup = "Capital do Brasil")
#Exemplo com o polígono de Brasília
municipios <- read_municipality(code_muni = "DF", year = 2020)
leaflet(data = municipios) %>%
addTiles() %>%
addPolygons(color = "black", weight = 1, fillColor = "lightgreen", fillOpacity = 0.7, popup = ~name_muni)
# Exemplo de legenda – marcadores coloridos
markers <- data.frame(
name = c("A", "B", "C"),
lat = c(-15.7801, -15.8801, -15.6801),
lng = c(-47.9292, -47.8292, -47.9292),
category = c("Tipo 1", "Tipo 2", "Tipo 3"))

leaflet(markers) %>%
addTiles() %>%
addCircleMarkers(
lng = ~lng, lat = ~lat,
color = ~ifelse(category == "Tipo 1", "red",
ifelse(category == "Tipo 2", "blue", "green")),
radius = 8, fillOpacity = 0.6,
popup = ~name
) %>%
addLegend(
position = "bottomright",
colors = c("red", "blue", "green"),
labels = c("Tipo 1", "Tipo 2", "Tipo 3"),
title = "Categorias")

10 Alterando o ícone do marcador

leaflet() %>%
addTiles() %>%
addMarkers(
lng = -47.9292, lat = -15.7801,
icon = makeIcon(
iconUrl = "https://cdn-icons-png.flaticon.com/512/25/25694.png",
iconWidth = 24, iconHeight = 24))
leaflet() %>%
addTiles() %>%
addMarkers(
lng = -47.9292, lat = -15.7801,
icon = makeIcon(
iconUrl = "https://cdn-icons-png.flaticon.com/512/148/148841.png",
iconWidth = 80, iconHeight = 80))